package com.yhy.wxzn.wcs.device.rgv.enums;

import com.yhy.wxzn.wcs.device.rgv.bean.Node;

import java.util.List;

/**
 * 路径规划中的动作
 * 因为电控那边把主通道作为托盘下降，所以动作不能重复发送，发送前需要检查状态
 */
public enum Action {
    顶升(1),
    /**
     * 坡道
     */
    下降或副通道(2),
    /**
     * 巷道、货位
     * 当前状态是副通道，下发主通道，状态为主通道
     * 当前状态是主通道，再次下发主通道，实现托盘下降
     */
    主通道(3),


    未知(-1)
    ;


   int cmd;

    Action(int cmd) {
        this.cmd = cmd;
    }


    public int getCmd() {
        return cmd;
    }


    public static Action getAction(List<Node> nodes){
        RunningDirection direct = RunningDirection.getDirect(nodes);
        if (RunningDirection.左.equals(direct) || RunningDirection.右.equals(direct))
            return 主通道;
        return 下降或副通道;
    }

    public static Action parseAction(int action){
        for (Action value : values()) {
            if (value.getCmd() == action)
                return value;
        }

        return 未知;
    }
}
